package utils

import (
	"flag"
	"log"
)

/*
 +----------------------------------------------------------------------
 + Title        : 初始化项目
 + Author       : huwl
 + Version      : 1.0.0
 + Initial-Time : 2020-01-06
 + Last-time    : 这个文件最后修改的时间 + 修改人的名称
 + Desc         : 初始化项目
 +----------------------------------------------------------------------
*/

// 运行环境
var Env string

// 项目模式
var AppMode string

// 项目名称
var AppName string

// 项目地址
var AppHost string

// 项目端口
var AppPort string

// 商品服务名称
var GoodsServiceName string

// 公共服务名称
var CommonServiceName string

// 订单服务名称
var OrderServiceName string

// 用户服务名称
var UserServiceName string

// 服务与发现
var ServiceDiscovery string

// 配置中心
var ConfigCenter string

// 配置中心 mysql 名称
var MySqlConfigCenter string

// 配置中心 redis 名称
var RedisConfigCenter string

// 配置中心 mongo 名称
var MongoConfigCenter string

// 配置中心 es 名称
var EsConfigCenter string

// 配置中心 rabbit 名称
var RabbitConfigCenter string

// jaeger链路跟踪地址
var JaegerAddr string

// zap 日志相关参数
var ZLoggerMaxSize int
var ZLoggerMaxBackups int
var ZLoggerMaxAge int
var ZLoggerCompress bool

func init() {
	// 设置日志标志：添加 Llongfile 或 Lshortfile
	log.SetFlags(log.LstdFlags | log.Llongfile) // 完整路径
	// 或者
	// log.SetFlags(log.LstdFlags | log.Lshortfile) // 短路径

	appConfig, err := GetConfig("app", "yml")
	if err != nil {
		log.Fatalln("读取app配置错误：", err.Error())
	}

	// 运行环境
	flag.StringVar(&Env, "env", "dev", "运行环境")
	flag.Parse()

	AppName = appConfig.GetString("app_name")
	AppMode = appConfig.GetString(Env + ".app_mode")
	AppHost = appConfig.GetString(Env + ".app_host")
	AppPort = appConfig.GetString(Env + ".app_port")

	ServiceDiscovery = appConfig.GetString(Env + ".service_discovery")
	// 配置中心
	ConfigCenter = appConfig.GetString(Env + ".config_center")

	// jaeger链路跟踪地址
	JaegerAddr = appConfig.GetString(Env + ".jaeger_addr")

	// zap 日志相关参数
	ZLoggerMaxSize = appConfig.GetInt(Env + ".zlogger_maxsize")
	ZLoggerMaxBackups = appConfig.GetInt(Env + ".zlogger_max_backups")
	ZLoggerMaxAge = appConfig.GetInt(Env + ".zlogger_max_age")
	ZLoggerCompress = appConfig.GetBool(Env + ".zlogger_compress")

	// 微服务名称
	CommonServiceName = appConfig.GetString("common_service_name")
	UserServiceName = appConfig.GetString("user_service_name")

	// 配置中心 mysql 名称
	MySqlConfigCenter = appConfig.GetString("mysql_config_center")

	// 配置中心 redis 名称
	RedisConfigCenter = appConfig.GetString("redis_config_center")

	// 配置中心 mongo 名称
	MongoConfigCenter = appConfig.GetString("mongo_config_center")

	// 配置中心 es 名称
	EsConfigCenter = appConfig.GetString("es_config_center")

	// 配置中心 rabbit 名称
	RabbitConfigCenter = appConfig.GetString("rabbit_config_center")
}
